e-stat API利用ガイド:登録からPythonでのデータ取得まで

はじめに

e-statは、日本の政府統計データを集約したポータルサイトです。このサイトでは、国勢調査や労働力調査、消費者物価指数など、多岐にわたる統計データが公開されています。

通常、これらのデータはウェブサイト上で閲覧したり、CSVファイルとしてダウンロードしたりしますが、e-statは「API(Application Programming Interface)」機能も提供しています。APIを利用することで、プログラムを通じて自動的に、そして効率的に統計データを取得できるようになります。

この記事では、e-statの利用登録からAPIキー(appId)の取得、そしてPythonを使ったAPIのサンプル実行まで、一連の流れを分かりやすく解説します。

1. e-statへのユーザー登録

APIを利用するには、まずe-statのユーザー登録が必要です。

  1. 公式サイトにアクセス: e-statのトップページにアクセスします。
  2. 新規登録: 画面右上にある「新規登録」ボタンをクリックします。
  3. 利用規約への同意: 利用規約が表示されるので、内容を確認し、「同意する」をクリックします。
  4. メールアドレスの入力: ご自身のメールアドレスを入力し、「確認」ボタンを押します。
  5. 仮登録完了: 入力したメールアドレス宛に、本登録用のURLが記載されたメールが届きます。
  6. 本登録: メールに記載されたURLにアクセスすると、ユーザー情報(ID、パスワード、氏名など)の入力フォームが表示されます。必要な情報を入力し、登録を完了させてください。

これでユーザー登録は完了です。

2. APIキー(appId)の取得

次に、APIを利用するために必要な「APIキー(appId)」を取得します。

  1. ログイン: e-statに登録したIDとパスワードでログインします。
  2. マイページへ移動: ログイン後、画面右上にある「マイページ」をクリックします。
  3. APIキーの発行: マイページ内のメニューから「API機能」セクションにある「利用申込」をクリックします。
  4. APIキーの確認: 利用申込画面に進むと、あなたの「アプリケーションID(appId)」が表示されています。これがAPIを利用する際に必要となるキーです。大切に保管してください。もし表示されていない場合は、画面の指示に従って利用申込手続きを進めてください。

3. API仕様の確認

実際にプログラムを書く前に、どのようなデータが取得できるのか、どのようにリクエストを送ればよいのかを定めた「API仕様」を確認しましょう。

APIの仕様書は、e-statサイト内の「API」セクションから確認できます。

特に重要なのは以下の2つのAPIです。

  • 統計表情報取得API: どのような統計表があるのか、そのIDや更新日などのメタデータを取得します。
  • 統計データ取得API: 統計表IDを指定して、具体的な統計データを取得します。

リクエストURLは基本的に以下の構造になっています。

https://api.e-stat.go.jp/rest/<バージョン>/app/json/<API名>?<パラメータ>

ここに、先ほど取得したappIdなどをパラメータとして付与してリクエストを送信します。

4. PythonによるAPI実行サンプル

それでは、実際にPythonを使ってe-stat APIからデータを取得してみましょう。 ここでは、requestsライブラリを使用します。インストールしていない場合は、ターミナルやコマンドプロンプトで以下のコマンドを実行してください。

pip install requests

サンプル1:統計表情報の一覧を取得する

import requests
import json

# 1. 取得したAPIキー(appId)を設定
APP_ID = "ここにあなたのappIdを入力してください"

# 2. APIのリクエストURLを定義
# 統計表情報取得APIのURL
url = "https://api.e-stat.go.jp/rest/3.0/app/json/getStatsList"

# 3. リクエストパラメータを設定
params = {
    "appId": APP_ID,
    "searchWord": "人口推計", # 例として「人口推計」を検索
    "searchKind": "1"
}

# 4. APIにリクエストを送信
try:
    response = requests.get(url, params=params)
    response.raise_for_status() # ステータスコードが200番台でない場合に例外を発生

    # 5. レスポンスをJSON形式で解析
    data = response.json()

    # 6. 結果の確認
    # レスポンスのステータスを確認
    result_status = data["GET_STATS_LIST"]["RESULT"]["STATUS"]
    if result_status == 0:
        print("データの取得に成功しました。")
        
        # 統計表の情報を取得
        stats_list = data["GET_STATS_LIST"]["DATALIST_INF"]["TABLE_INF"]
        
        print(f"見つかった統計表の数: {len(stats_list)}")
        
        # 最初の5件を表示
        for i, stat in enumerate(stats_list[:5]):
            print(f"--- {i+1}件目 ---")
            print(f"  統計表ID: {stat['@id']}")
            print(f"  タイトル: {stat['STAT_NAME']['$']}")
            print(f"  提供機関: {stat['GOV_ORG']['$']}")
            print(f"  最終更新日: {stat['UPDATED_DATE']}")

    else:
        # エラーメッセージを表示
        error_msg = data["GET_STATS_LIST"]["RESULT"]["ERROR_MSG"]
        print(f"データの取得に失敗しました。エラー: {error_msg}")

except requests.exceptions.RequestException as e:
    print(f"リクエスト中にエラーが発生しました: {e}")
except json.JSONDecodeError:
    print("レスポンスのJSON解析に失敗しました。")

コードの解説

  1. APP_IDの変数に、ご自身がe-statで取得したAPIキーを設定します。
  2. e-stat APIの「統計表情報取得」のエンドポイントURLを指定します。バージョンは3.0を使用しています。
  3. リクエストに必要なパラメータを辞書形式で定義します。appIdは必須です。ここではsearchWordで「人口推計」に関する統計表を検索しています。
  4. requests.get()を使ってAPIにリクエストを送信します。
  5. response.json()で、返ってきたレスポンスをJSON形式(Pythonでは辞書型)に変換します。
  6. 取得したデータの中から、必要な情報(統計表IDやタイトルなど)を取り出して表示しています。

まとめ

この記事では、e-statの利用登録からAPIキーの取得、そしてPythonを使ったデータ取得の具体的な方法までを解説しました。

e-stat APIを活用することで、手作業でデータをダウンロードする手間を省き、常に最新の統計データを自動で収集・分析する仕組みを構築できます。今回紹介した人口統計以外にも、経済、社会、教育など、非常に多くの貴重なデータが公開されています。

私自身はこのデータを活用して、自身の住んでいる地域の情報を可視化したいと考えています。